package com.cn.wx.servlet.login;

import com.cn.wx.model.UserModel;
import com.cn.wx.service.LoginService;
import com.cn.wx.util.Page;
import redis.clients.jedis.Jedis;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.Map;

@WebServlet("/seleteAll")
public class LoginSelectAll extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        1.拿到总条数
        LoginService loginService = new LoginService();
        Integer count = loginService.count("");
        Map<String, Object> map = Page.getPageNum(req, "type", "dangqianye", "pageSize", count);
        List<UserModel> list = loginService.getAll(Integer.parseInt(map.get("pageSize").toString()), Integer.parseInt(map.get("dangqianye").toString()));

        req.setAttribute("map", map);
        req.setAttribute("list", list);


        /**
         * redis是非关系型数据库，说明可以作为存储，就等于数据库
         */
        Jedis jedis = new Jedis();
        //将数据库的用户id为1的用户读取出来，放入redis
        UserModel userModel = loginService.getUserById(18);
        jedis.set("name", userModel.getUsername());//String
        String username=jedis.get("name");
        req.setAttribute("redisname",username);
        req.getRequestDispatcher("/back/UserManage.jsp").forward(req, resp);//页面转发

//        学习点：修改，删除
//        1.修改，在查询页面，添加操作一列，然后在查询出的数据里面添加修改和删除选项
//        2.因为修改和删除要进行点击，所以我们对其添加了a标签，a标签默认get方法
//        3.无论修改和删除，我们都需要通过id去查询操作。
//         <a href="loginUpdate?id=${user.id}"> 修改</a>
//         <a href="loginDelete?id=${user.id}"> 删除</a>
//        4.新建servlet类：LoginUpdateServlet，主要作用于跳转，将 查询出的数据显示在用户修改页面LoginUpdate.jsp
//        5.点击修改页面保存，将所得的form表单的数据传递到后台LoginSaveServlet
//        6.修改完后我们需要刷新用户管理页面
//          1）在service层新建修改方法public int update(UserModel userModel){
//          2）在dao层新建修改接口int update(UserModel userModel);
//          3）在impl层实现该接口
//        7.这里做了一个跳转LoginSelectAll，
//        8.删除和修改步骤一样
//        9.新增数据：和修改的区别，就是我们有一个隐藏的数据id
//          <input type="hidden" name="id" value="${user.id}">
//        10.通过这个隐藏的id我们判断是否为新增或者修改LoginSaveServlet
//        11.当我们用中文新增的时候出现乱码问题
//           req.setCharacterEncoding("UTF-8");//请求的时候设置编码：页面将数据发送到后台
//          resp.setCharacterEncoding("UTF-8");//响应的时候设置编码：后台将数据发送到页面
//         任务安排：
//        1.将项目导到自己的电脑里面，然后将剩下新闻查询出出来，
//        2.可以对新闻进行新增，修改，删除
//        3.熟悉一下分页MySQL。limit  
    }
}
